#include "ModuleBuildBuffer.h"

void ModuleBuildBuffer::init(QCVModuleHandlerInterface * parent)
{
	this->parent=parent;
	win=new QWidget();
  layout=new QVBoxLayout(win);
	pb_clear=new QPushButton("Vider le buffer",win);
	layout->addWidget(pb_clear);
	
	connect(pb_clear,SIGNAL(clicked()),this,SLOT(s_clear()));
}
////////////////////////////////////////////////////////////////////////////////
void ModuleBuildBuffer::free()
{
	delete win;
}
////////////////////////////////////////////////////////////////////////////////
cv::Mat & ModuleBuildBuffer::process()
{
	if(!data.empty())
	{
		if(data.cols==1)
		{
			if((buffer.empty()) || (buffer.cols!=data.cols))
			{
				buffer=data.clone();
			}
			else
			{
				buffer.push_back(data);
			}
		}
		else
		{
			std::cout<<"Erreur ModuleBuildBuffer: input.cols!=1\n";
		}
	}
	return buffer;
}
////////////////////////////////////////////////////////////////////////////////
void ModuleBuildBuffer::setInput(int n,const cv::Mat & m)
{
	if(n==0)
	{	
		data=m.clone();
	}
}
////////////////////////////////////////////////////////////////////////////////
QWidget* ModuleBuildBuffer::widget()
{
	return win;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleBuildBuffer::getName()
{
	return tr("Construire Buffer");
}
////////////////////////////////////////////////////////////////////////////////
int ModuleBuildBuffer::nbInputs()
{
	return 1;
}
////////////////////////////////////////////////////////////////////////////////
bool ModuleBuildBuffer::setParams(QString params)
{
	QStringList list_params=params.split(";");
		
	if(list_params.size()==1)
	{
		return true;
	}
	else
	{
		return false;
	}	
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleBuildBuffer::getParams()
{
	return tr("no_param");
}

////////////////////////////////////////////////////////////////////////////////
QCVModuleInterface * ModuleBuildBuffer::clone()
{
	return new ModuleBuildBuffer;
}
////////////////////////////////////////////////////////////////////////////////
QString ModuleBuildBuffer::help(int id)
{
	if(id==-2)
	{
		return tr("Permet de construire un vecteur");
	}
	else if(id==-1)
	{
		return tr("vecteur");
	}
	else if(id==0)
	{
		return tr("nombre | vecteur");
	}
	else
	{
		return tr("erreur");
	}
}
////////////////////////////////////////////////////////////////////////////////
void ModuleBuildBuffer::s_clear()
{
	buffer.release();
}

Q_EXPORT_PLUGIN2(ModuleBuildBuffer_plugin,ModuleBuildBuffer);  
